package com.solution.admin.point.service;

import java.math.BigDecimal;
import java.util.List;
import java.util.Map;

import com.solution.admin.point.entity.PointLogEntity;
import com.solution.common.page.PageBean;
import com.solution.common.page.PageParam;

/**
 * 积分日志信息接口service接口层
 * 
 * @author xu_cc
 * @date 2017-10-20 14:18:04
 */
public interface PointLogService {

    /**
     * 保存积分日志信息
     * 
     * @param pointLogEntity
     *            积分日志信息实体
     * @return Long 返回插入积分日志信息记录ID
     * @author xu_cc
     * @date 2017-10-20 14:18:04
     */
    public long savePointLog(PointLogEntity pointLogEntity);

    /**
     * 根据ID查询积分日志信息
     * 
     * @param id
     *            积分日志信息id
     * @return PointLogEntity 积分日志信息对象
     * @author xu_cc
     * @date 2017-10-20 14:18:04
     */
    public PointLogEntity getPointLogById(Long id);

    /**
     * 更新积分日志信息
     * 
     * @param PointLogEntity
     *            积分日志信息对象
     * @return int 更新是否成功，>1代表更新成功
     * @author xu_cc
     * @date 2017-10-20 14:18:04
     */
    public int updatePointLog(PointLogEntity pointLogEntity);

    /**
     * 分页查询积分日志信息
     * 
     * @param pageParam
     *            分页参数
     * @param paramMap
     *            查询参数
     * @return PageBean 分页参数和分页数据
     * @author xu_cc
     * @date 2017-10-20 14:18:04
     */
    public PageBean listPointLogPage(PageParam pageParam, Map<String, Object> paramMap);

    /**
     * 根据条件查询积分日志信息
     * 
     * @param param
     * @return 积分日志信息列表
     * @author xu_cc
     * @date 2017-10-20 14:18:04
     */
    public List<PointLogEntity> listPointLog(Map<String, Object> param);

    /**
     * 计算客户在指定时间段内，累计增加积分数（用于积分清零规则-保留3个月所得积分）<br>
     * key:[startTime,endTime,customerId]<br>
     * 其中，时间格式：yyyy-MM-dd HH:mm:ss
     * 
     * @param param
     * @return BigDecimal
     * @author xu_cc
     * @throws Exception
     *             exception
     * @Date 创建时间：2017年10月26日 下午5:19:58
     */
    public BigDecimal getTotalByCustomerIdInTime(Map<String, Object> param);
    
    /**
	 * 获取用户消费积分总和
	 * 
	 * @param customerId
	 * @return BigDecimal
	 * @author xu_cc
	 * @throws Exception
	 *             exception
	 * @Date 创建时间：2018年5月16日 下午6:13:27
	 */
	public BigDecimal getCustomerTotalPoint(Map<String, Object> param);

}
